#include <iostream>
#include <iomanip>
#include "misc.h"

using std::cout;
using std::setw;
using std::endl;

#ifdef  BOOST_ENABLE_ASSERT_HANDLER
#include <boost/assert.hpp>
#ifndef BOOST_ASSERT_MSG_OSTREAM
# define BOOST_ASSERT_MSG_OSTREAM std::cerr
#endif

namespace boost
    { 
      //      namespace assertion 
      // { 
      //  namespace detail
      // {
          void assertion_failed_msg(char const * expr, char const * msg, 
                                           char const * function,
                                           char const * file, long line)
          {
            BOOST_ASSERT_MSG_OSTREAM
              << "***** Internalllllll Program Error - assertion (" << expr << ") failed in function "
              << function << ":\n"
              << file << '(' << line << "): " << msg << std::endl;
            std::abort();
          }
          // } // detail
          // } // assertion
    } // boost
#endif


namespace colors
{
  const char* black = "\033[22;30m";
  const char* red = "\033[22;31m";
  const char* green = "\033[22;32m";
  const char* brown = "\033[22;33m";
  const char* blue = "\033[22;34m";
  const char* magenta = "\033[22;35m";
  const char* cyan = "\033[22;36m";
  const char* gray = "\033[22;37m";
  const char* dark_gray = "\033[01;30m";
  const char* light_red = "\033[01;31m";
  const char* light_green = "\033[01;32m";
  const char* yelow = "\033[01;33m";
  const char* light_blue = "\033[01;34m";
  const char* light_magenta = "\033[01;35m";
  const char* light_cyan = "\033[01;36m";
  const char* white = "\033[01;37m";
  const char* def_col = "\033[0m";
  const char* bold = "\033[1m";
}

void logo()
{
  cout<<colors::light_blue<<"____________________________\n";
  cout<<colors::light_blue<<"_____"<<colors::light_red<<"___  ______   __ ____"<<colors::light_blue<<"__\n";
  cout<<colors::light_blue<<"____"<<colors::light_red<<"/__ || _____|_/ // ___\\"<<colors::light_blue<<"_\n";
  cout<<colors::light_blue<<"___"<<colors::light_red<<"//_/ |||__/ __  // /   `"<<colors::light_blue<<"_\n";
  cout<<colors::light_blue<<"__"<<colors::light_red<<"/ __, || __|/_/ // /___ "<<colors::light_blue<<"__\n";
  cout<<colors::light_blue<<"_"<<colors::light_red<<"/_/  \\_|||/___,_/ \\____/"<<colors::light_blue<<"___\n";
  cout<<colors::light_blue<<"____________________________\n";
  cout<<endl;
  cout<<std::left<<colors::light_blue<<setw(17)<<"Package:"<<colors::yelow<<"AFDC"<<endl;
  cout<<colors::light_blue<<setw(17)<<"Version:"<<colors::yelow<<"0.3"<<endl;
  cout<<colors::light_blue<<setw(17)<<"Author:"<<colors::yelow<<"Andrey Pikelner, DLNP JINR, Dubna"<<endl;
  cout<<colors::light_blue<<setw(17)<<"Bug reports:"<<colors::yelow<<"apik@nu.jinr.ru"<<endl;
  cout<<endl<<colors::def_col;
  
}

